package com.whjz.dcfs.util;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 分页封装类
 */
@SuppressWarnings("unchecked")
public class PageParam implements Serializable{
	private static final long serialVersionUID = 1L;
	
	/**
	 * 总记录数
	 */
	private int totalCount = 0;
	
	/**
	 * 当前页码
	 */ 
	private int pageNo = 1;
	
	/**
	 * 每页大小
	 */
	private int pageSize = 99999999;
	
	/**
	 * 查询结果
	 */
	private List result = null;
	
	/**
	 * 扩展list结果集
	 */
	private List extendsResult = null;
	
	/**
	 * 扩展map结果集
	 */
	private Map extendsMap = null;

	/**
	 * 总页码
	 */
	private int totalPage;

	/**
	 * 当前页起始序号
	 */
	private int pageIndex = -1;
	
	/**
	 * 当前页的最后索引
	 */
	private int pageLast = -1;
	
	
	/**
	 * 获取当前页码
	 * @return 当前页码
	 */
	public int getPageNo() {
		return pageNo;
	}

	/**
	 * 设置当前页码
	 * @param pageNo 当前页码
	 */
	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	/**
	 * 获取当前页显示内容数量
	 * @return 每页大小
	 */
	public int getPageSize() {
		return pageSize;
	}

	/**
	 * 设置当前页显示内容数量
	 * @param pageSize 每页大小
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	/**
	 * 获取记录总记录数
	 * @return 总记录数
	 */
	public int getTotalCount() {
		return totalCount;
	}

	/**
	 * 设置记录总条数
	 * @param totalCount 总记录数
	 */
	public void setTotalCount(int totalCount) {
		this.totalCount = totalCount;
	}

	/**
	 * 获取第一页
	 * @return 第一页
	 */
	public int getFirstPage() {
		if (totalCount == 0) {
			return 0;
		}
		return 1;
	}

	/**
	 * 获取当前页起始序号
	 * @return 当前页起始序号
	 */
	public int getPageIndex() {
		if(pageIndex != -1){
			return pageIndex;
		}
		if (pageNo <= 0 || pageSize <= 0) {
			return -1;
		}
		if (pageNo == 1) {
			return 0;
		}
		return (pageNo - 1) * pageSize;
	}
	/**
	 * 设置当前页起始序号
	 * @param firstIndex 当前页起始序号
	 */
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}

	/**
	 * 获取查询结果
	 * @return 查询结果
	 */
	public List getResult() {
		return result;
	}

	/**
	 * 设置查询结果
	 * @param result 查询结果
	 */
	public void setResult(List result) {
		this.result = result;
	}

	/**
	 * 设置总页码
	 * @param totalPage 总页码
	 */
	public void setTotalPage(int totalPage) {
		this.totalPage = totalPage;
	}
	
	/**
	 * 获取总页码
	 * @return 总页码
	 */
	public int getTotalPage() {
		if (totalCount <= 0) {
			return 1;
		}
		if (totalCount < pageSize) {
			return 1;
		}
		if ((totalCount % pageSize) == 0) {
			return totalCount / pageSize;
		}
		return (totalCount / pageSize) + 1;
	}

	public List getExtendsResult() {
		return extendsResult;
	}

	public void setExtendsResult(List extendsResult) {
		this.extendsResult = extendsResult;
	}

	public Map getExtendsMap() {
		return extendsMap;
	}

	public void setExtendsMap(Map extendsMap) {
		this.extendsMap = extendsMap;
	}

	public int getPageLast() {
		return pageIndex + pageSize;
	}

	public void setPageLast(int pageLast) {
		this.pageLast = pageLast;
	}
	
}
